
/**
 * 创建一个三轴控制器
 * @param {device} device 目标ESP8266开发板
 * @param {number} pwnPin 脉冲引脚
 * @param {number} directionPin 方向引脚
 * @param {number} enablePin 使能引脚
 * 
 */
function Controller(xmotor, ymotor, zmotor) {


    /**
     * 移动多少距脉冲
     * @param zfirst Z轴是否优先？
     */
    this.move = function (x, y, z, zfirst) {
        xmotor.add(Math.abs(x), x < 0 ? LOW : HIGH)
        ymotor.add(Math.abs(y), y < 0 ? LOW : HIGH)
        zmotor.add(Math.abs(z), z < 0 ? LOW : HIGH)
        if (zfirst) {
            zmotor.start()
        }
        postCommand(ymotor.command, ymotor.device)
        postCommand(xmotor.command, xmotor.device)
        waitCommand(ymotor.id, ymotor.device)
        waitCommand(xmotor.id, xmotor.device)
        if (!zfirst) {
            zmotor.start()
        }
    }


    /**
     * 
     * @returns 获取到三轴目前的索引位置
     */
    this.getPosition = function () {
        return { X: xmotor.position, Y: ymotor.position, Z: zmotor.position }
    }

    /**
     * 移动到
     */
    this.moveTo = function (x, y, z, zfirst) {
        this.move(x - xmotor.position, y - ymotor.position, z - zmotor.position, zfirst)
    }


    /**
     * 回原点
     */
    this.home = function () {
        xmotor.homed = false
        ymotor.homed = false
        zmotor.homed = false
        zmotor.home()
        xmotor.home()
        ymotor.home()
    }




}